package com.micro.modual.entity;

import javax.persistence.Id;

import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;

/**
 * <h1>订单基础表表 micro_order</h1>
 *
 * @author levelcoder
 * @date 2020-08-04 00:11:10
 */
@ApiModel(description = "订单基础表")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "micro_order")
public class Order implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @ApiModelProperty(value = "主键编号")
    private Long id;


    /**
     * 订单编号
     */
    @ApiModelProperty(value = "订单编号")
    private String orderCode;


    /**
     * 订单类别
     */
    @ApiModelProperty(value = "订单类别")
    private String orderType;


    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    private Date createTime;


    /**
     * 完成时间
     */
    @ApiModelProperty(value = "完成时间")
    private Date finishTime;


    /**
     * 支付时间
     */
    @ApiModelProperty(value = "支付时间")
    private Date payTime;


    /**
     * 发货时间
     */
    @ApiModelProperty(value = "发货时间")
    private Date deliveryTime;


    /**
     * 关闭时间
     */
    @ApiModelProperty(value = "关闭时间")
    private Date closeTime;


    /**
     * 订单状态
     */
    @ApiModelProperty(value = "订单状态")
    private Byte orderStatus;


    /**
     * 订单备注
     */
    @ApiModelProperty(value = "订单备注")
    private String orderRemark;


    /**
     * 订单商品总数
     */
    @ApiModelProperty(value = "订单商品总数")
    private Integer orderGoodsTotalNumber;


    /**
     * 邮费
     */
    @ApiModelProperty(value = "邮费")
    private BigDecimal orderPostage;


    /**
     * 订单总金额:指订单商品总金额,不包含邮费和优惠金额
     */
    @ApiModelProperty(value = "订单总金额:指订单商品总金额,不包含邮费和优惠金额")
    private BigDecimal orderTotalPrice;


    /**
     * 订单优惠总金额
     */
    @ApiModelProperty(value = "订单优惠总金额")
    private BigDecimal orderTotalDiscountPrice;


    /**
     * 支付方式 1.支付宝 2.微信 3.银联 4.钱包 5.混合
     */
    @ApiModelProperty(value = "支付方式 1.支付宝 2.微信 3.银联 4.钱包 5.混合")
    private Byte payType;


    /**
     * 订单来源  网页:pc、 安卓:android、 苹果:ios、 M站:m、公众号:common、 小程序:small、 安卓平板:android_ipad、苹果平板:ios_ipad
     */
    @ApiModelProperty(value = "订单来源  网页:pc、 安卓:android、 苹果:ios、 M站:m、公众号:common、 小程序:small、 安卓平板:android_ipad、苹果平板:ios_ipad")
    private String orderSourceType;


    /**
     * 用户编号
     */
    @ApiModelProperty(value = "用户编号")
    private String userCode;


    /**
     * 关闭原因
     */
    @ApiModelProperty(value = "关闭原因")
    private String closeDesc;


    /**
     * 支付回调流水号
     */
    @ApiModelProperty(value = "支付回调流水号")
    private String returnPayNo;


    /**
     * 订单有效性 1.有效 2删除 主要面对用户主动删除标志
     */
    @ApiModelProperty(value = "订单有效性 1.有效 2删除 主要面对用户主动删除标志")
    private Byte orderEffectiveStatus;


    /**
     * 收货人名称
     */
    @ApiModelProperty(value = "收货人名称")
    private String receiverName;


    /**
     * 收件人手机号
     */
    @ApiModelProperty(value = "收件人手机号")
    private String receiverPhone;


    /**
     * 省份名称
     */
    @ApiModelProperty(value = "省份名称")
    private String provinceName;


    /**
     * 城市名称
     */
    @ApiModelProperty(value = "城市名称")
    private String cityName;


    /**
     * 区域名称
     */
    @ApiModelProperty(value = "区域名称")
    private String areaName;


    /**
     * 具体地址
     */
    @ApiModelProperty(value = "具体地址")
    private String orderAddress;


    /**
     * 订单实际应付金额
     */
    @ApiModelProperty(value = "订单实际应付金额")
    private BigDecimal orderActualPrice;


    /**
     * 提取方式 1.快递 2.包邮 3.自提
     */
    @ApiModelProperty(value = "提取方式 1.快递 2.包邮 3.自提")
    private Byte extractionType;


    /**
     * 订单更新时间
     */
    @ApiModelProperty(value = "订单更新时间")
    private Date updateTime;


    /**
     * 物流名称
     */
    @ApiModelProperty(value = "物流名称")
    private String expressName;


    /**
     * 物流单号
     */
    @ApiModelProperty(value = "物流单号")
    private String expressNo;


    /**
     * 评论状态 1.已评论 2.未评论
     */
    @ApiModelProperty(value = "评论状态 1.已评论 2.未评论")
    private Byte commentStatus;


    /**
     * 是否包含 眼镜指需要用户提供眼镜度数的眼镜 1.是 2.否
     */
    @ApiModelProperty(value = "是否包含 眼镜指需要用户提供眼镜度数的眼镜 1.是 2.否")
    private Byte includingGlasses;


    /**
     * 用户视力详情,通过JSON存储,仅当订单中存在眼镜商品时候存在
     */
    @ApiModelProperty(value = "用户视力详情,通过JSON存储,仅当订单中存在眼镜商品时候存在")
    private String userEyesDetail;

}
